home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
COMAL
/
Z-Misc Series
/
(k)ze.d64
/
src.codeload
< prev
next >
Wrap
Text File
|
2007-03-01
|
2KB
|
115 lines
;--------------------------------;
; CODELOAD - A COMAL MODULE ;
; ;
; RUNNING A PROGRAM WITH A CODE ;
; ;
; BY DICK KLINGENS ;
; 851001 ;
; DUTCH COMAL USERS GROUP ;
; THE HAGUE - HOLLAND ;
;--------------------------------;
;
* =$8009 ;START OF MODULE
;
;--CONSTANTS---------------------;
FALSE =0
TRUE =1
DEFPAG =%01000110 ;MAP
DIS =8 ;CHARACTERS
CR =13
LOWER =14
;
;--VARIABLES & ROUTINES----------;
TEMP =$0055 ;TEMPORARY STORAGE
INDEX =$00F6 ;INDEX FOR TEXT
CDBUF =$C661 ;CODE BUFFER
NOREST =$C841 ;RESTORE
HEADLN =$C84D ;FLAG
CWRT =$CA06 ;PRINT CHAR ON SCREEN
COMAL =$CA30 ;TO COMAL EDITOR
EXCUTE =$CA36 ;EXECUTE CODE
SCAN =$FFE4 ;SCAN KEYBOARD
;
;--CODES-------------------------;
LOAD =2
RUN =14
;
;--MODULE DESCRIPTION------------;
.BYTE DEFPAG ;MAP
.WORD EIND ;END OF MODULE
.WORD SIGNAL ;THERE IS A SIGNAL ROUTINE
.WORD 0 ;NO PACKAGES
;
;--------------------------------;
SIGNAL CPY #LOAD ;IF NOT LOAD THEN
BNE NLOAD ; GOTO NLOAD
LDA POWER
BEQ FIRST
JSR INCODE ;EXEC INCODE
LDA #255
STA HEADLN
STA CDBUF+3
LDA #RUN
STA CDBUF+4
JSR EXCUTE ;EXEC EXCUTE
JMP COMAL ;GOTO COMAL EDITOR
;
FIRST INC POWER
NLOAD RTS ;RETURN TO COMAL
;
POWER .BYTE 0
;
INCODE LDA #TRUE
STA NOREST ;DISABLE RESTORE
LDA #<TEXT
LDX #>TEXT
JSR PRTEXT ;EXEC PRTEXT
JSR READ ;EXEC READ
LDA #FALSE
STA NOREST ;ENABLE RESTORE
RTS ;RETURN FROM INCODE
;
PRTEXT STA INDEX ;SET TEXT POINTER
STX INDEX+1
LDY #0
REPEAT LDA (INDEX),Y ;READ CHAR
BEQ EOT ;IF END-OF-TEXT THEN GOTO EOT
JSR CWRT ;EXEC CWRT
INY
BNE REPEAT
EOT RTS ;RETURN FROM PRTEXT
;
TEXT .BYTE DIS,LOWER
.BYTE 'TYPE CODE: '
.BYTE 0 ;END-OF-TEXT
;
READ LDX #0
WAIT STX TEMP
SWAIT JSR SCAN ;EXEC SCAN
BEQ SWAIT ;IF NO CHAR THEN GOTO SWAIT
LDX TEMP
CMP CODE,X ;IF NOT CODE=X THEN
BNE CDERR ; GOTO CDERR
INX
CPX #CDEND-CODE ;IF NOT END-OF-CODE THEN
BNE WAIT ; GOTO WAIT
LDA #<OK
LDX #>OK
JSR PRTEXT ;PRINT "OK"
RTS ;RETURN FROM READ
;
CDERR JSR SCAN ;EXEC SCAN
CMP #CR ;IF NOT <CR> THEN
BNE CDERR ; GOTO CDERR
LDA #<ERTXT
LDX #>ERTXT
JSR PRTEXT ;EXEC PRTEXT
LOOP JMP LOOP ;RESET!!
;
CODE .BYTE 'CML80' ;THIS IS THE CODE
CDEND
OK .BYTE 'OK',CR,0
ERTXT .BYTE 'ERROR IN CODE, RESET',0
;
EIND .END